package rawwrs.action;



import java.util.*;

import javax.servlet.ServletContext;

import org.apache.struts2.StrutsStatics;

import rawwrs.bean.DepartamentoDTO;
import rawwrs.bean.DistritoDTO;
import rawwrs.bean.PropiedadDTO;
import rawwrs.bean.PropiedadDetalleDTO;
import rawwrs.bean.ProvinciaDTO;
import rawwrs.bean.ProyectoDTO;
import rawwrs.bean.ProyectoDetalleDTO;
import rawwrs.bean.UsuarioDTO;
import rawwrs.dao.jpa.PropiedadJPADAO;
import rawwrs.dao.jpa.ProyectoDetalleJPADAO;
import rawwrs.dao.jpa.ProyectoJPADAO;
import rawwrs.dao.jpa.UbigeoJPADAO;
import rawwrs.dao.jpa.UsuarioJPADAO;
import rawwrs.entity.Proyecto;


import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;




public class ProyectoAction extends ActionSupport {
	
	private static final long serialVersionUID = 1L;
    private ProyectoDTO proyecto;
    private UsuarioDTO usuario;

	private  String list[]; //lista de distritos;

	
	
	private int codigo_propiedad;

    ProyectoJPADAO  pjd = new ProyectoJPADAO();
    
    
    UbigeoJPADAO servicio_ubigeo = new UbigeoJPADAO();
    UsuarioJPADAO servicio_usuario = new UsuarioJPADAO();
    PropiedadJPADAO servicio_propiedad = new PropiedadJPADAO();
    ProyectoJPADAO servicio_proyecto = new ProyectoJPADAO();
    ProyectoDetalleJPADAO servicio_detalle = new ProyectoDetalleJPADAO();
    
    
    List<DepartamentoDTO> lista_departamento;
    List<ProvinciaDTO> lista_provincia;
    List<DistritoDTO> lista_distrito;
    
    private String codigo;
    private String nombre_distritos ="";
    
    private List<ProyectoDTO> proyectos;


	private List<PropiedadDTO> propiedades;
	private List<PropiedadDTO> propiedades_usadas;	
   
	private List<PropiedadDetalleDTO> propdet; 
    private PropiedadDetalleDTO propiedaddet;
  
	private String mensaje="";
    Map<String, Object>	s_user =	ActionContext.getContext().getSession();


	
    public String mostrarEditar(){
   
    	ProyectoDTO propi = new ProyectoDTO();
    	propi.setId(proyecto.getId());
    	mensaje="";
    	proyecto = pjd.obtenerProyecto(propi);  
    	
    	lista_departamento=servicio_ubigeo.lista_departamentos(0);
    	lista_provincia= servicio_ubigeo.lista_provincias(proyecto.getDepartamento(),0);
    	lista_distrito=servicio_ubigeo.lista_distritos(proyecto.getProvincia(),0);
    	
    	UsuarioDTO us = (UsuarioDTO)s_user.get("s_user_actual");
    	propiedades = servicio_propiedad.obetener_todos_x_estado(us.getId());
        propiedades_usadas = servicio_detalle.obtenerTodos(proyecto.getId()+"");

    	return SUCCESS;
    }
    
	
	
    public String registrar(){ 
    	
    	lista_departamento = servicio_ubigeo.lista_departamentos(0);
    	UsuarioDTO us = (UsuarioDTO)s_user.get("s_user_actual");
    	propiedades = servicio_propiedad.obetener_todos_x_estado(us.getId());
    	return SUCCESS;
    	
    }
    

    
    
    
    
    public String actualizar(){
        
    	ActionContext ac = ActionContext.getContext();
 		ServletContext sc = (ServletContext)ac.get(StrutsStatics.SERVLET_CONTEXT);
 		
 		System.out.println(sc.getRealPath("/upload/"));		
 		String ruta = sc.getRealPath("/upload/");	
		proyecto.setRuta("1-pro.jpg");
		 
		System.out.println("id-> "+proyecto.getId());
    	
		Proyecto  proyecto_aux= servicio_proyecto.actualizar(proyecto,ruta);
    	
		System.out.println("murio");
		
		if(list!=null){
 			
 	    	for (int i = 0; i < list.length; i++){
 	    		
   		     System.out.println("entro");
   			 PropiedadDTO propiedad = new PropiedadDTO();
   			 propiedad.setId(Integer.parseInt(list[i]));
			     propiedad = servicio_propiedad.obtenerPropiedad(propiedad);
			     servicio_propiedad.cambiar_estado_on(propiedad);
			   
			     ProyectoDetalleDTO detalle = new ProyectoDetalleDTO();
			     detalle.setId_propiedad(list[i]+"");
			     detalle.setId_proyecto(proyecto_aux.getId()+""); 			    
			     servicio_detalle.insertar(detalle);			     
		   }
 	    	
 		}
	
		lista_departamento=servicio_ubigeo.lista_departamentos(0);
    	lista_provincia= servicio_ubigeo.lista_provincias(proyecto.getDepartamento(),0);
    	lista_distrito=servicio_ubigeo.lista_distritos(proyecto.getProvincia(),0);
    	
    	UsuarioDTO us = (UsuarioDTO)s_user.get("s_user_actual");
    	propiedades = servicio_propiedad.obetener_todos_x_estado(us.getId());
        propiedades_usadas = servicio_detalle.obtenerTodos(proyecto.getId()+"");

		
		
		mensaje="SUCCESS";			
		return SUCCESS;		
	}
    
    
    
    public String insert(){
    	
    	ActionContext ac = ActionContext.getContext();
 		ServletContext sc = (ServletContext)ac.get(StrutsStatics.SERVLET_CONTEXT);
 		
 		System.out.println(sc.getRealPath("/upload/"));		
 		String ruta = sc.getRealPath("/upload/");	
 		
 	
 		UsuarioDTO us = (UsuarioDTO)s_user.get("s_user_actual");
 		proyecto.setUsuario_id(us);  
 		
 		proyecto.setRuta("1-pro.jpg");
 
 		
 		Proyecto  proyecto_aux= servicio_proyecto.insertar(proyecto,ruta);
    	
 		
 		System.out.println("antes del for...");
 		
 		if(list!=null){
 			
 	    	for (int i = 0; i < list.length; i++){
 	    		
   		     System.out.println("entro");
   			 PropiedadDTO propiedad = new PropiedadDTO();
   			 propiedad.setId(Integer.parseInt(list[i]));
			     propiedad = servicio_propiedad.obtenerPropiedad(propiedad);
			     servicio_propiedad.cambiar_estado_on(propiedad);
			   
			     ProyectoDetalleDTO detalle = new ProyectoDetalleDTO();
			     detalle.setId_propiedad(list[i]+"");
			     detalle.setId_proyecto(proyecto_aux.getId()+""); 			    
			     servicio_detalle.insertar(detalle);
			     
		   }
   	
 	    	
 		}

    	
    	return SUCCESS;
    }
  
    public String obtenerTodosProyectos(){
    
 		UsuarioDTO us = (UsuarioDTO)s_user.get("s_user_actual"); 		
    	proyectos = servicio_proyecto.obtenerTodos(us.getId());
    	
    	return SUCCESS;
    }
    
	
	
	public ProyectoDTO getProyecto() {
		return proyecto;
	}
	public void setProyecto(ProyectoDTO proyecto) {
		this.proyecto = proyecto;
	}
	public UsuarioDTO getUsuario() {
		return usuario;
	}
	public void setUsuario(UsuarioDTO usuario) {
		this.usuario = usuario;
	}
	public int getCodigo_propiedad() {
		return codigo_propiedad;
	}
	public void setCodigo_propiedad(int codigoPropiedad) {
		codigo_propiedad = codigoPropiedad;
	}
	public ProyectoJPADAO getPjd() {
		return pjd;
	}
	public void setPjd(ProyectoJPADAO pjd) {
		this.pjd = pjd;
	}
	public UbigeoJPADAO getServicio_ubigeo() {
		return servicio_ubigeo;
	}
	public void setServicio_ubigeo(UbigeoJPADAO servicioUbigeo) {
		servicio_ubigeo = servicioUbigeo;
	}
	public UsuarioJPADAO getServicio_usuario() {
		return servicio_usuario;
	}
	public void setServicio_usuario(UsuarioJPADAO servicioUsuario) {
		servicio_usuario = servicioUsuario;
	}
	public List<DepartamentoDTO> getLista_departamento() {
		return lista_departamento;
	}
	public void setLista_departamento(List<DepartamentoDTO> listaDepartamento) {
		lista_departamento = listaDepartamento;
	}
	public List<ProvinciaDTO> getLista_provincia() {
		return lista_provincia;
	}
	public void setLista_provincia(List<ProvinciaDTO> listaProvincia) {
		lista_provincia = listaProvincia;
	}
	public List<DistritoDTO> getLista_distrito() {
		return lista_distrito;
	}
	public void setLista_distrito(List<DistritoDTO> listaDistrito) {
		lista_distrito = listaDistrito;
	}
	public String getCodigo() {
		return codigo;
	}
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	public String getNombre_distritos() {
		return nombre_distritos;
	}
	public void setNombre_distritos(String nombreDistritos) {
		nombre_distritos = nombreDistritos;
	}
	public List<PropiedadDTO> getPropiedades() {
		return propiedades;
	}
	public void setPropiedades(List<PropiedadDTO> propiedades) {
		this.propiedades = propiedades;
	}
	public List<PropiedadDetalleDTO> getPropdet() {
		return propdet;
	}
	public void setPropdet(List<PropiedadDetalleDTO> propdet) {
		this.propdet = propdet;
	}
	public PropiedadDetalleDTO getPropiedaddet() {
		return propiedaddet;
	}
	public void setPropiedaddet(PropiedadDetalleDTO propiedaddet) {
		this.propiedaddet = propiedaddet;
	}
	public String getMensaje() {
		return mensaje;
	}
	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}	
    
	public String[] getList() {
		return list;
	}

	public void setList(String[] list) {
		this.list = list;
	}	
    
	public List<ProyectoDTO> getProyectos() {
		return proyectos;
	}	
	public void setProyectos(List<ProyectoDTO> proyectos) {
		this.proyectos = proyectos;
	}



	public List<PropiedadDTO> getPropiedades_usadas() {
		return propiedades_usadas;
	}



	public void setPropiedades_usadas(List<PropiedadDTO> propiedadesUsadas) {
		propiedades_usadas = propiedadesUsadas;
	}


	
    

}





    
    


